package com.porfirio.contapunti;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class UpdatePlayerScoreDialog extends Dialog implements OnClickListener {

	private static final int NEW_SCORE = 0;
	private static final int ADD_SCORE = 1;
	private static final int SUBTRACT_SCORE = 2;
	Button scoreButton;
	Button addButton;
	Button subtractButton;
	Gioco gioco;
	TextView text;
	String baseText;
	EditText et;
	int player;
	private ArrayAdapter<String> aaPlayersList;
	UpdatePlayerScoreDialog th=this;
	private Boolean reorder;
	private Boolean updateAll;


	public UpdatePlayerScoreDialog(Context context) {
		super(context);
		setContentView(R.layout.updateplayerscoredialog);
		text = (TextView) findViewById(R.id.txtUpdateScore);
		baseText=new String(text.getText().toString());
		et = (EditText) findViewById(R.id.editScore);
		scoreButton = (Button) findViewById(R.id.btnUpdateScore);
		addButton = (Button) findViewById(R.id.btnAddScore);
		subtractButton = (Button) findViewById(R.id.btnSubtractFromScore);
		
		scoreButton.setOnClickListener(new View.OnClickListener(){
			@Override
			public void onClick(View v) {
				updateButtonClick(NEW_SCORE);
			}
		});

		addButton.setOnClickListener(new View.OnClickListener(){
			@Override
			public void onClick(View v) {
				updateButtonClick(ADD_SCORE);
			}
			});

		
		subtractButton.setOnClickListener(new View.OnClickListener(){
			@Override
			public void onClick(View v) {
				updateButtonClick(SUBTRACT_SCORE);

			}
			});
		
	}
	
	public void updateButtonClick(int type) {
			int score;
			if (!(et.getText().toString().equals(""))){
				score=Integer.parseInt(et.getText().toString());
				et.setText(null);
				int previousScore=gioco.getGiocatoreByOrder(player).getPunteggio();
				switch (type) {
					case NEW_SCORE:
						gioco.getGiocatoreByOrder(player).setPunteggio(score); break;
					case ADD_SCORE:					
						gioco.getGiocatoreByOrder(player).setPunteggio(previousScore+score);
						break;
					case SUBTRACT_SCORE:
						gioco.getGiocatoreByOrder(player).setPunteggio(previousScore-score);
						break;
				}				
				if (reorder) { 
					gioco.sort();
			        aaPlayersList.clear();
			        for (int i=0;i<gioco.getNumGiocatori();i++) {
			        	aaPlayersList.add(gioco.getGiocatoreList().get(i).getPunteggio()+" - "+gioco.getGiocatoreList().get(i).getNome());
			        	gioco.getGiocatoreList().get(i).setOrder(i);
			        }		        
				}
		        
		        if (updateAll) {
		        	player++;
					if (player>=gioco.getNumGiocatori()){
						gioco.sort();
				        aaPlayersList.clear();
				        for (int i=0;i<gioco.getNumGiocatori();i++) {
				        	aaPlayersList.add(gioco.getGiocatoreList().get(i).getPunteggio()+" - "+gioco.getGiocatoreList().get(i).getNome());
				        	gioco.getGiocatoreList().get(i).setOrder(i);
				        }
				        this.dismiss();
					}
					else
						setText(gioco.getGiocatoreByOrder(player).getNome());
		        }
		        else
		        	th.dismiss();
		        	
			}
		};

	
	public void setPlayer(int p){
		player=p;
		return;
	}
	
	public void setGioco(Gioco g){
		gioco=g;
		return;
	}
	
	public void setAaPlayersList(ArrayAdapter<String> aaPlayersList) {
		this.aaPlayersList = aaPlayersList;
	}

	public ArrayAdapter<String> getAaPlayersList() {
		return aaPlayersList;
	}

	public void setReorder(Boolean reorder) {
		this.reorder = reorder;
	}

	public Boolean getReorder() {
		return reorder;
	}

	public void setText(String nome) {
		text.setText(baseText+" "+nome);		
	}

	public void updateAll(boolean b) {
		updateAll=b;
		if (b) {
			reorder=false;
			player=0;
		}
		else
			reorder=true;
	}

	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		Log.d("MYDBG",arg0.toString());
		th.dismiss();
	}
	
}

